package com.taijihuabao.common.commonutils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间转换工具类
 *
 * @author Tu
 * @date 2022/1/6 16:18
 */
public class DateFormatUtil {

    /**
     * 日期转字符串
     *
     * @param date 时间参数
     * @return 转换后的字符串时间
     */
    public static String formatSimpleDateTime(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.format(date);
    }

    /**
     * 字符串转日期
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatSimpleDateTime(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.parse(date);
    }

    /**
     * 时间转换(12小时)
     *
     * @param date 时间参数
     * @return 转换后时间
     */
    public static String formatDateTime12H(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return simpleDateFormat.format(date);
    }

    /**
     * 时间转换(12小时)
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatDateTime12H(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return simpleDateFormat.parse(date);
    }

    /**
     * 日期转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static String formatDate(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return simpleDateFormat.format(date);
    }

    /**
     * 日期转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatDate(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return simpleDateFormat.parse(date);
    }

    /**
     * 日期转换（不分割）
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static String formatDateCrowd(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
        return simpleDateFormat.format(date);
    }

    /**
     * 日期转换（不分割）
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatDateCrowd(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
        return simpleDateFormat.parse(date);
    }

    /**
     * 时分秒转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static String formatTime(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        return simpleDateFormat.format(date);
    }

    /**
     * 时分秒转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatTime(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        return simpleDateFormat.parse(date);
    }

    /**
     * 月份日期转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static String formatMonthDay(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM:dd");
        return simpleDateFormat.format(date);
    }

    /**
     * 月份日期转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatMonthDay(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM:dd");
        return simpleDateFormat.parse(date);
    }

    /**
     * 时分转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static String formatHourMin(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
        return simpleDateFormat.format(date);
    }

    /**
     * 时分转换
     *
     * @param date 时间参数
     * @return 转换后的日期
     */
    public static Date formatHourMin(String date) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
        return simpleDateFormat.parse(date);
    }

}
